/*
 * protocol_event.h
 *
 *  Created on: 13.06.2013
 *      Author: SpirTanol
 */

#ifndef PROTOCOL_EVENT_H_
#define PROTOCOL_EVENT_H_

// QT
#include <QDateTime>

enum ProtocolEventType
{
	PET_APP,
	PET_DEVICE,
	PET_CRASH,
};

/** Содержит информацию о событии, например: подключение, авария, остановка двигателя. */
class ProtocolEvent
{

public:
	class SortDesc
	{
	public:
		SortDesc() {}
		~SortDesc() {}

		bool operator() (const ProtocolEvent *e1, const ProtocolEvent *e2) const
		{
			return (e1->time().toUTC().toTime_t() > e2->time().toUTC().toTime_t());
		}
	};

private:
	QDateTime oTime;
	ProtocolEventType oType;

public:
	ProtocolEvent(const QDateTime &time, ProtocolEventType type) : oTime(time), oType(type) {}
	virtual ~ProtocolEvent() {}

	inline const QDateTime &time() const { return oTime; }
	inline ProtocolEventType type() const { return oType; }

	QString strTime() const { return oTime.toString("dd.MM.yy hh:mm:ss"); }
	virtual QString toString() const = 0;

};

#endif /* PROTOCOL_EVENT_H_ */
